package com.tedu.api.thread;

import org.junit.jupiter.api.Test;

import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 * 单元测试：testLambdaHomeWork1⭐ 周二12：00之前提交
 * 1.线程两种创建方式：使用Lambda表达式完成  参考TR
 * 2.找集合中：listAPI：单元测试名：testSort：使用Lambda表达式完成
 * 3.找IO流--File类---FilterAPI：转换成匿名内部了转成Lambda
 *   使用Lambda表达式完成【五行搞定】
 * 4.找IO流--File类---FilterAPI：转换成匿名内部类转成Lambda
 *   使用Lambda表达式完成【两行搞定】
 *
 *   Lambda 简化  匿名内部类---优化代码：方法省去--> 不清楚方法名作用
 */

public class testLambda_HomeWork1 {
    //1.线程两种创建方式：使用Lambda表达式完成  参考TR
    public static void main(String[] args) {
        Thread t1 = new Thread(() -> {
            for (int i = 0; i < 1000; i++) {
                System.out.println("要上喽");
            }
        });
        t1.start();
        Runnable r = () -> {
            for (int i = 0; i < 1000; i++) {
                System.out.println("Runnable");
            }
        };


        //3.找IO流--File类---FilterAPI：转换成匿名内部了转成Lambda
        // *   使用Lambda表达式完成【五行搞定】
        File file = new File("." + File.separator + "API");
        FileFilter hhh = pathname -> {return pathname.getName().startsWith("s");};
        File[] subs = file.listFiles(hhh);
        for (int i = 0; i < subs.length; i++)
        {System.out.println("五行就对了" + subs[i].getName());}


        //找IO流--File类---FilterAPI：转换成匿名内部类转成Lambda
        //使用Lambda表达式完成【两行搞定】
        for (File lh : new File("." + File.separator + "API").listFiles(pathname -> {return pathname.getName().startsWith("s");}))
        {System.out.println("两行就对了" + lh);}
    }

    // 2.ListAPI：单元测试名：testSort：使用Lambda表达式完成
    @Test
    public void testSort(){
        List<String> list = new ArrayList<>();
        list.add("弹吉他");
        list.add("吹笛子");
        list.add("拉提琴");
        list.add("敲大钟");
        //2.Lambda
        Comparator<String> com=(String o1,String o2)->{return o1.length()-o2.length();};
        Collections.sort(list,com);
        System.out.println("按照文字长短进行集合排序："+list);
    }

    @Test
    public void testSort1() {
        File file = new File(".");
        File[] subs=file.listFiles(pathname->pathname.getName().startsWith("s"));
        for (File sub:subs){
            System.out.println(sub.getName());
        }
        File[] sub1=file.listFiles(pathname->{
            String name=pathname.getName();
            System.out.println(name);
            return name.startsWith("s");
        });
        for(File sub:sub1){
            System.out.println("File"+sub.getName());
        }
    }
}

